/*
 * MinIO Java SDK for Amazon S3 Compatible Cloud Storage,
 * (C) 2022 MinIO, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package io.minio.admin.messages.info;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.math.BigDecimal;

/**
 * ErasureSetInfo provides information per erasure set
 *
 * @see <a href=
 *     "https://github.com/minio/madmin-go/blob/main/info-commands.go#L227">info-commands.go</a>
 */
@JsonIgnoreProperties(ignoreUnknown = true)
public class ErasureSetInfo {
  @JsonProperty("id")
  private Integer id;

  @JsonProperty("rawUsage")
  private BigDecimal rawUsage;

  @JsonProperty("rawCapacity")
  private BigDecimal rawCapacity;

  @JsonProperty("usage")
  private BigDecimal usage;

  @JsonProperty("objectsCount")
  private BigDecimal objectsCount;

  @JsonProperty("versionsCount")
  private BigDecimal versionsCount;

  @JsonProperty("healDisks")
  private Integer healDisks;

  public Integer id() {
    return id;
  }

  public BigDecimal rawUsage() {
    return rawUsage;
  }

  public BigDecimal rawCapacity() {
    return rawCapacity;
  }

  public BigDecimal usage() {
    return usage;
  }

  public BigDecimal objectsCount() {
    return objectsCount;
  }

  public BigDecimal versionsCount() {
    return versionsCount;
  }

  public Integer healDisks() {
    return healDisks;
  }
}
